import java.util.Stack;

/**
 * @author Sebastian
 * @version 2.0
 * @date 2024/6/26 21:13
 */
//用栈实现队列
    //请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作（push、pop、peek、empty）：
    // 实现 MyQueue 类：

    //void push(int x) 将元素 x 推到队列的末尾
    //int pop() 从队列的开头移除并返回元素
    //int peek() 返回队列开头的元素
    //boolean empty() 如果队列为空，返回 true ；否则，返回 false
public class Solution232 {
    Stack<Integer> stackIn;
    Stack<Integer> stackOut;

    public Solution232() {
        stackIn = new Stack<Integer>();
        stackOut = new Stack<Integer>();
    }

    public void push(int x) {
        stackIn.push(x);
    }
    public int pop() {
        dumpStackIn();
        return stackOut.pop();
    }
    public int peek() {
        dumpStackIn();
        return stackOut.peek();
    }
    public boolean empty() {
        return stackIn.isEmpty() && stackOut.isEmpty();
    }
    // 从队尾栈推出到队头栈
    private void dumpStackIn() {
        if (!stackOut.isEmpty()) return;
        while (!stackIn.isEmpty()) {
            stackOut.push(stackIn.pop());
        }
    }
}
